/*
 * ...
 *
 */

#ifndef UNITRAF_GRAPHTRAITS_HPP
#define UNITRAF_GRAPHTRAITS_HPP

#include <graph\Common.hpp>

namespace unitraf {

namespace graph_traits {

/////////////////////////////////////////////////////////////////////////////
// TAGS

// Directed graph tag
struct directed_tag {};
// Incidence list model tag
struct incidence_list_tag {};

// No-Property
struct no_property_tag {};

// COMMON PROPERTIES

struct BusStopProperty {

  BusStopProperty() {};

  BusStopProperty(double folks) 
    : folks(folks), time(0.0), buses(0) {};

  
  // REPRESENTATION
  
  // Folks count awaiting at the bus stop
  double folks;

  // Accumulated time to take from given stop to the target
  double time;

  // Count of busses stopping at station
  __int64 unsigned buses;

};


struct StreetSectionProperty {

  StreetSectionProperty() {};

  StreetSectionProperty(double time) 
    : time(time) {};

  // REPRESENTATION

  // Time to pass the road section
  double time;

};

};  // class graph_traits

};  // namespace unitraf

#endif  // #ifndef UNITRAF_GRAPHTRAITS_HPP